package File;

import java.io.*;
import java.util.Scanner;

public class Homework2 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入源文件的路径:");
        String srcPath = scanner.next();
        System.out.println("请输入目标文件的路径:");
        String destPath = scanner.next();
        File srcFile = new File(srcPath);

        if(!srcFile.isFile()){
            System.out.println("该源文件不存在或者不是文件");
            return;
        }

        File destFile = new File(destPath);
        // 要求destFile 不一定存在, 但是destFile 的所在目录一定存在
        if (!destFile.getParentFile().isDirectory()){
            System.out.println("目标文件所在的目录不存在");
            return;
        }

        copyFile(srcFile,destFile);

    }

    private static void copyFile(File srcFile, File destFile) {
        try(Reader reader = new FileReader(srcFile);
            Writer writer = new FileWriter(destFile)){
            char[] buf = new char[1024];
            int len = 0;
            while(true){
                len = reader.read(buf);//读取数据到缓冲区
                if(len == -1){
                    break;
                }
                //虽然是覆盖模式，但由于是连续写入，
                // 每次write都从上一次结束的位置继续，所以不会覆盖已写入的内容。
                writer.write(buf,0,len);
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        System.out.println("复制完成");
    }
}
